class FPRegisters:
    def __init__(self):
        # 初始化浮点寄存器组 10个寄存器F1--F10
        # 每个寄存器包含值（value）、重排序缓冲区条目编号（reorder）、是否忙碌（busy）
        # 以及一个预测字段（predicted_value），用于存储预测的寄存器值
        self.registers = {f"F{i}": {"value": 0, "reorder": None, "busy": False, "predicted_value": None} for i in range(1, 11)}

    def update_register(self, register_name, value, reorder=None, predicted_value=None):
        """
        更新寄存器的值、重排序条目以及预测值。
        :param register_name: 寄存器名称。
        :param value: 新的值。
        :param reorder: 重排序缓冲区条目编号（默认为None）。
        :param predicted_value: 预测的寄存器值（默认为None）。
        """
        if register_name in self.registers:
            if reorder == self.registers[register_name]["reorder"]:
                self.registers[register_name]["value"] = value
                self.registers[register_name]["busy"] = False
            elif reorder is not None:
                self.registers[register_name]["reorder"] = reorder
                self.registers[register_name]["busy"] = True
            
            if predicted_value is not None:
                self.registers[register_name]["predicted_value"] = predicted_value  # 更新预测值

    def mark_as_busy(self, register_name, reorder):
        """
        标记寄存器为忙碌，并设置重排序条目。
        :param register_name: 寄存器名称。
        :param reorder: 重排序缓冲区条目编号。
        """
        self.update_register(register_name, None, reorder=reorder)

    def read_register(self, register_name):
        """
        读取寄存器的值。
        :param register_name: 寄存器名称。
        :return: 寄存器的值，如果寄存器不存在则返回None。
        """
        return self.registers.get(register_name, {}).get("value")

    def is_register_busy(self, register_name):
        """
        检查寄存器是否忙碌。
        :param register_name: 寄存器名称。
        :return: 寄存器是否忙碌，如果寄存器不存在则返回False。
        """
        return self.registers.get(register_name, {}).get("busy", False)

    def get_predicted_value(self, register_name):
        """
        获取寄存器的预测值。
        :param register_name: 寄存器名称。
        :return: 预测值，如果没有预测值则返回None。
        """
        return self.registers.get(register_name, {}).get("predicted_value")

    def display_registers(self):
        """
        显示所有寄存器的状态，包括预测值。
        """
        print("Register State:")
        for reg_name in sorted(self.registers.keys()):
            reg_info = self.registers[reg_name]
            print(f"{reg_name}: Value={reg_info['value']}, Reorder={reg_info['reorder']}, Busy={reg_info['busy']}, Predicted Value={reg_info['predicted_value']}")
